package cn.skylark.wcm.service;

import cn.skylark.wcm.entity.Filetable;
import com.github.pagehelper.PageInfo;

public interface FileManagerService {
    /**
     * 逻辑删除表格中文件
     *
     * @param id
     */
    void delete(Integer id, Integer type);

    /**
     * 批量逻辑删除表格中文件
     *
     * @param ids
     */
    void batchDelete(String[] ids);

    /**
     * 通过userid 获取文件列表
     *
     * @param filetable  文件的实体类
     * @param start 开始为第几条
     * @param length 每页多少个
     * @param flag 标志位
     * @param filename 查询条件
     * @return
     */
    PageInfo<Filetable> selectByPageFolder(Filetable filetable, String flag,int start, int length,String filename);

    /**
     * 通过userid和租户id 获取文件的初始化列表
     *
     * @param filetable 文件的实体类
     * @param start     开始为第几条
     * @param length    每页多少个
     * @return
     */
    PageInfo<Filetable> selectInitFileListByParameter(Filetable filetable,String flag, int start, int length, String filename);

    /**
     * 新建文件夹
     *
     * @param filetable 文件的实体类
     */
    void saveFolder(Filetable filetable);

    /**
     * 根据条件进行查询该文件夹是否存在
     *
     * @param filetable
     * @return
     */
    Filetable selectByParameter(Filetable filetable);

    /**
     * 获取分页视频列表
     *
     * @param filetable 文件的实体类
     * @param start     开始是第几条
     * @param length    每页多少数据
     * @return
     */
    PageInfo<Filetable> selectVideoListByParameter(Filetable filetable,String flag,int start, int length, String filename);

    /**
     * //通过文件的id获得此id下的所有属性
     *
     * @param id
     */
    Filetable selectById(Integer id);

    /**
     * 获取该租户下的已经用掉的储存空间
     *
     * @param tenanid 租户id
     * @return
     */
    String getTotalSize(Integer tenanid);

    /**
     * 通过条件获得实体类的通用方法
     *
     * @param filetable
     */
    Filetable selectOne(Filetable filetable);


    /**
     * 把本地图片进行base64编码
     *
     * @param imgpath 图片路径
     * @return
     */
    String base64Convert(String imgpath);

    /**
     *  删除已上传的文件
     * @param fatherid 父目录id
     * @param tenanid 租户id
     * @param userid 用户id
     * @param filename 文件名
     * @param type 类型
     */
    void deleteFileByName(String fatherid,Integer tenanid, Integer userid, String filename,Integer type);
}
